近日想玩一下网络编程方面,但是实在不想用C去写笨重的代码,于是就使用python写了一个简单的TCP Echo Server。代码很少,标题虽然写了十分钟,但是我自己磕磕碰碰还是折腾了一天(标题党了)
什么是Echo Server
Echo Server一般是运行在7端口的一项服务,其一大特点就是会返回从客户端接收到的消息。(通俗来说就是复读机)
Echo Server能用来做什么
Echo Server是最容易实现的网络服务之一,可以用来学习Socket编程的一些基本知识,还可以用来检测客户端与服务器之间的连通性,丢包率,连接速度和传输速度。
实现思路
一开始我觉得应该挺容易的,快速的从网上找到了一些相关的代码,采用Ctrl C V大法,但是却发现有很多问题,最终还是自己动手才写出一个像样的东西。
首先第一步,我们得监听一个端口,调用python的socket模块,让其绑定在一个端口,监听TCP连接。
1 | #使用IPV4和TCP连接,监听端口程序 |
第二步,我们检测是否有客户端连接上,如果连接上了,就将对这个客户的处理逻辑单独放到一个线程里跑(这是坑最多的一部,看了网上很多代码,要么就是直接一个线程,无法处理多客户,要么就是所有客户端共用一个处理线程,当数据量较大时就会出现问题)
1 | while True: |
最后我们只要在线程处理逻辑中,编写相关的回显逻辑,就可以了。
1 | while True: |
当然上面为了演示,对实际代码做了很多精简,完整的代码在下面(需要科学上网):